#!/bin/bash

# 下载Docker镜像的脚本

# 设置颜色
RED='\033[0;31m'
GREEN='\033[0;32m'
BLUE='\033[0;34m'
NC='\033[0m' # 无颜色

# 简单的日志函数
log_info() { echo -e "${BLUE}[INFO] $1${NC}"; }
log_error() { echo -e "${RED}[ERROR] $1${NC}"; }
log_success() { echo -e "${GREEN}[SUCCESS] $1${NC}"; }

# 检查镜像是否存在
check_image_exists() {
    local image_name=$1
    # 使用docker images命令检查镜像是否存在，只输出镜像ID
    local image_id=$(docker images -q "$image_name" 2> /dev/null)
    # 如果image_id不为空，则镜像存在
    if [ -n "$image_id" ]; then
        return 0  # 镜像存在
    else
        return 1  # 镜像不存在
    fi
}

# 定义要下载的镜像列表
IMAGES=("quay.io/coreos/etcd:v3.5.16"
        "minio/minio:RELEASE.2023-03-20T20-16-18Z"
        "milvusdb/milvus:v2.5.4")

# 检查Docker是否已安装
if ! command -v docker &> /dev/null
then
    log_error "错误: Docker未安装，请先安装Docker。"
    exit 1
fi

# 检查Docker服务是否正在运行
if ! docker info &> /dev/null
then
    log_error "错误: Docker服务未运行，请先启动Docker。"
    exit 1
fi

# 开始下载镜像
log_info "开始下载Docker镜像..."
log_info "----------------------------------------"

for image in "${IMAGES[@]}"
do
    log_info "检查镜像: $image"
    # 检查镜像是否已存在
    if check_image_exists "$image"; then
        log_success "镜像 $image 已存在，跳过下载!"
    else
        log_info "镜像 $image 不存在，开始下载..."
        docker pull "$image"
        if [ $? -eq 0 ]; then
            log_success "镜像 $image 下载成功!"
        else
            log_error "错误: 镜像 $image 下载失败!"
            exit 1
        fi
    fi
    log_info "----------------------------------------"
done

log_success "所有镜像下载完成!"
exit 0